package com.sunclouder.cactus.util;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sunclouder.cactus.common.model.PageInfo;

import java.util.List;
import java.util.function.Function;

import static java.util.stream.Collectors.toList;

public class PageUtils {
    /**
     * 把 mybatis-plus 的分页对象转换成通用的分页对象
     * @param page
     * @return
     * @param <T>
     */
    public static <T> PageInfo<T> of(Page<T> page) {
        return of(page, Function.identity());
    }

    /**
     * 把 mybatis-plus 的分页对象转换成通用的分页对象
     * @param page
     * @param mapper
     * @return
     * @param <T>
     * @param <R>
     */
    public static <T, R> PageInfo<R> of(Page<T> page, Function<? super T, ? extends R> mapper) {
        PageInfo<R> pageInfo = new PageInfo<>();
        List<R> collect = page.getRecords().stream().map(mapper).collect(toList());
        pageInfo.setRecords(collect);
        pageInfo.setTotal(page.getTotal());
        pageInfo.setPageSize((int) page.getSize());
        pageInfo.setPageNum(page.getCurrent());
        pageInfo.setTotalPages(page.getPages());
        return pageInfo;
    }
}
